from PyQt5.QtWidgets import QStatusBar, QLabel
from PyQt5.QtCore import QTimer, QDateTime

class StatusBar(QStatusBar):
    def __init__(self, parent=None):
        super().__init__(parent)
        self.setup_status_bar()
    
    def setup_status_bar(self):
        """设置状态栏组件"""
        # 左侧信息：显示当前状态
        self.status_label = QLabel("就绪")
        self.addWidget(self.status_label)
        
        # 中间信息：显示当前文件路径（使用永久组件确保有足够空间）
        self.file_path_label = QLabel("")
        self.file_path_label.setMinimumWidth(300)  # 设置最小宽度
        self.addPermanentWidget(self.file_path_label)
        
        # 右侧信息：显示行号、列号等信息
        self.position_label = QLabel("行: 1 列: 1")
        self.addPermanentWidget(self.position_label)
        
        # 右侧信息：显示当前时间
        self.time_label = QLabel()
        self.addPermanentWidget(self.time_label)
        
        # 创建定时器更新时间
        self.timer = QTimer(self)
        self.timer.timeout.connect(self.update_time)
        self.timer.start(1000)  # 每秒更新一次
        
        # 初始化时间显示
        self.update_time()
    
    def update_time(self):
        """更新时间显示"""
        current_time = QDateTime.currentDateTime().toString("yyyy-MM-dd hh:mm:ss")
        self.time_label.setText(current_time)
    
    def set_status(self, status_text):
        """设置状态文本"""
        self.status_label.setText(status_text)
    
    def set_position(self, line, column):
        """设置光标位置"""
        self.position_label.setText(f"行: {line} 列: {column}")
    
    def set_file_path(self, file_path):
        """设置文件路径显示"""
        if file_path:
            self.file_path_label.setText(file_path)
        else:
            self.file_path_label.setText("")
    
    def get_stylesheet(self):
        """返回状态栏的样式表（现在由主题系统管理）"""
        # 由于样式现在由主题系统统一管理，这里返回空字符串
        return ""